#include<iostream>


// void Swap(int*a,int*b)
// {
//     int c = *a;
//     *a = *b;
//     *b = c;
// }

void Swap(int &a,int &b)
{
    int c = a;
    a = b;
    b = c;
}


int main()
{
    // int a = 10;
    // int b = 20;
    // Swap(&a,&b);

    //引用
    // int a = 10;

    // 引用在定义时必须初始化
    // 左值引用 ：   引用只能绑定左值

    //const & : 常引用：可以接右值

    // const int &b = 10;

    // int &b = a;  //b 是 a 的引用 : 间接访问内存，修改内存的方式   


       

    // b = 20;
    // std::cout<<a<<std::endl;

    // int a = 10;
    // int b = 20;
    // Swap(a,b);

    // std::cout<<a<<" "<<b<<std::endl;

    // //引用 在 初始化绑定后不会再绑定为其他变量的引用
    int a = 10;
    int &b = a;
    int c = 30;
    b = c;

  std::cout<<a<<std::endl;

    //引用的本质 是什么？     指针常量

    // int &b = a;
    
    // g++ 编译后
    // int a =10;

    // int *const b = &a;

    return 0;
}